<?php
require_once 'NotesController.php';
require_once 'NotesView.php';
require_once 'LoginView.php';
require_once 'ErrorView.php';
require_once 'Register.php';
require_once 'AdminHandler.php';
require_once 'AdminView.php';
require_once 'NotesHandler.php';
require_once 'LogView.php';
require_once 'UninstallController.php';


class AdminController
{
	private $m_database = NULL;
	private $m_tablePrefix = NULL;

    public function __construct(DatabaseConnection $database)
    {
        $this->m_database = $database;
		$this->m_tablePrefix = $database->getTablePrefix();
    }
	
	public function doControll()
	{
		$xhtml = "";
		// Skapar instanser av klasserna som används.
		$Register = new Register($this->m_database);
		$ErrorView = new ErrorView();
		$LoginView = new LoginView();
		$AdminHandler = new AdminHandler($this->m_database);
		$AdminView = new AdminView();
		
		// Har användaren försökt att radera databasen? 
		if ($AdminView->triedtoUninstallNotes() == true)
		{
			// Skapa objekt av UninstallController och kör.
			$UninstallController = new UninstallController($this->m_database);
			
			$xhtml .= $UninstallController->doControll();
		}
		
		// Skapar en instas av NotesController.
		$NotesController = new NotesController($this->m_database);
		$NotesHandler = new NotesHandler($this->m_database);
		
		// Kör doControll i NotesController.
		$xhtml .= $NotesController->doControll();	
		
		// Har admin först ta bort en användare?
		if ($AdminView->adminTriedToRemoveUser() == true)
		{
			// Har användaren några notes?
			if ($NotesHandler->hasNotes($AdminView->getUserId()) == true)
			{
				// Ta bort användarens notes.
				$NotesHandler->removeAllNotes($AdminView->getUserId());
			}
			
			// Ta bort användaren.
			$Register->removeUserById($AdminView->getUserId());
		}
		
		// Visa användarlist.	
		$xhtml .= $AdminView->showUsers($AdminHandler->getAllUsers());
		
		// Visar loggningen.
		$LogView = new LogView();
		$xhtml .= $LogView->ShowErrors();
		
		return $xhtml;
	}
}